package com.lmf.dao;

import com.lmf.domain.Student;
import com.lmf.vo.QueryParam;
import com.lmf.vo.User;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

public interface StudentDao {

       //验证接受的查询的返回的单个值。    ——简单类型
       int selectStudentsById(Integer id);

       //查找某个id对象,将某个值传递给Java对象的某一个属性值          ——对象类型
       Student selectStudentById(Integer id);

       //验证在mybatis中设置，自定义类的别名（不建议这么使用，建议使用类的全限定名称）     ——对象类型
       QueryParam selectMultiParam(@Param("sid") Integer id);

       /**
        * 测试查询返回是一个map集合,          ——map类型
        * 列名是map的key，列值是map的value，
        * 且只能返回一行记录，超过一行就会报错
        */
       Map<Object,Object> selectMapById(Integer id);

       //当java对象的属性名称与数据库表的列名不一致的时候，使用resultMap定义映射关系
       List<Student> selectAllStudents();
       //当java对象的属性名称与数据库表的列名不一致的时候，使用数据库的as定义列名的别名。
       List<User> selectAllStudents2();

       //验证当对象的属性值与数据库表的列名完全不一样的时候
       User selectUserById(Integer id);

       //第一种模糊查询，java代码指定 like内容
       List<Student> selectLikeOne(String name);
       //第二种模糊查询，name就是模糊查询包含的内容，mapper文件中拼接 like "%" "李" "%"
       List<Student> selectLikeTwo(String name);



}
